package br.gov.dataprev.treinamento.ejb.service.impl;

import java.math.BigDecimal;
import java.util.HashMap;
import java.util.Map;

import br.gov.dataprev.treinamento.ejb.modelo.ItemPedido;
import br.gov.dataprev.treinamento.ejb.modelo.Pedido;
import br.gov.dataprev.treinamento.ejb.service.remote.FreteServiceRemote;

public class FreteServiceImpl {

	
	private static Map<String,Double> tabelaFrete = new HashMap<String,Double>();
	
	static {
		
		tabelaFrete.put("RJ", 0D);
		tabelaFrete.put("SP", 7.5D);
		tabelaFrete.put("MG", 9D);
		tabelaFrete.put("PR", 12.5D);
		tabelaFrete.put("SC", 13.2D);
		tabelaFrete.put("RS", 14D);
		tabelaFrete.put("BA", 9.5D);
		tabelaFrete.put("PB", 9.5D);
		tabelaFrete.put("CE", 9.5D);
		tabelaFrete.put("DF", 8.5D);
		tabelaFrete.put("", 15D);
		
		
	}
	
	@Override
	public BigDecimal calcularFrete(Pedido p) {
		
		int qtVolumes = 0;
		
		for (ItemPedido ip : p.getItens()) {
			qtVolumes += ip.getQuantidade();
		}
		
		String uf = p.getCliente().getEndereco().getUf().toUpperCase();
		
		Double aliquota;
		
		if (tabelaFrete.containsKey(uf)) {
			aliquota = tabelaFrete.get(uf);
		} else {
			aliquota = tabelaFrete.get("");
		}
		
		return new BigDecimal(qtVolumes*aliquota).setScale(2);
		
	}
	
	
}
